package main

import "fmt"

// 结构体
func main() {

	// student 创建一个student类型的结构体
	type student struct {
		name   string
		age    int
		gender string
		hobby  []string
	}

	jack := student{
		name:   "Jack",
		age:    19,
		gender: "男",
		hobby:  []string{"篮球", "足球", "双色球"},
	}
	fmt.Println(jack)        // {Jack 19 男 [篮球 足球 双色球]}
	fmt.Println(jack.name)   // Jack
	fmt.Println(jack.age)    // 19
	fmt.Println(jack.gender) // 男
	fmt.Println(jack.hobby)  // [篮球 足球 双色球]

	// 2. 实例化方法
	// 结构体是值类型
	// 如果初始化没有初始化 其字段都是默认值
	var tom = student{}
	fmt.Println(tom.name)
	fmt.Println(tom.age)
	fmt.Println(tom.gender)

	// 3. 实例化方法
	var jeery = new(student)
	fmt.Println(jeery)
	jeery.name = "jeery" // 地址赋值
	fmt.Println(jeery)   // &{jeery 0  []}

	// 4. 实例化方法
	var mj = &student{}
	mj.name = "mj"
	fmt.Println(mj.name) // mj

}
